package com.pucong.gitee.database.backup.database.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.pucong.gitee.database.backup.common.entity.BackupDatabase;
import com.pucong.gitee.database.backup.common.selfenum.TreeType;
import com.pucong.gitee.database.backup.common.vo.DbBackTree;
import com.pucong.gitee.database.backup.database.vo.DeleteDatabase;
import com.pucong.gitee.database.backup.database.vo.ExeSqlResult;
import com.pucong.gitee.database.backup.database.vo.RenameDatabase;

import java.util.List;

/**
 * 人员表 service接口
 *
 * @author pucong
 * @company www.louddt.com
 * @create 2020-06-23
 */
public interface BackupDatabaseService {

    /**
     * 分页获取数据库信息
     * @param pageNum
     * @param pageSize
     * @param backupDatabase
     * @return
     */
    IPage<BackupDatabase> getDatabaseListByPage(int pageNum, int pageSize, BackupDatabase backupDatabase);

    /**
     * 查询数据源
     * @return
     */
    List<BackupDatabase> getDatabaseList();

    /**
     * 根据id获取数据库信息
     * @param id
     * @return
     */
    BackupDatabase getBaseInfoById(String id);

    /**
     * 保存数据库信息
     * @param backupDatabase
     * @return
     */
    int saveBaseInfo(BackupDatabase backupDatabase);

    /**
     * 连接测试
     * @param backupDatabase
     * @return
     */
    boolean connectionTest(BackupDatabase backupDatabase);

    /**
     * 根据主键测试连接
     * @param id
     * @return
     */
    boolean connectionTestById(String id);

    /**
     * 获取数据库list
     * @param databaseId
     * @return
     */
    ExeSqlResult getDatabaseList(String databaseId);


    /**
     * 关闭连接
     * @param databaseId
     * @return
     */
    Boolean closeConnection(String databaseId);

    Boolean renameDatabase(String databaseId, RenameDatabase renameDatabase);

    Boolean deleteDatabase(String databaseId, DeleteDatabase deleteDatabase);

    /**
     * 获取ltree ist
     * @return
     * @param id
     * @param treeType
     */
    List<DbBackTree> getTreeList(String id, TreeType treeType);
}
